package com.thinkit.bigdata.core.entity;

import java.io.Serializable;

/**
 * 通用结果处理类
 * @author jxk
 * @date 2019-5-7
 */
public class ResultMsg implements Serializable {

    private static final long serialVersionUID = 1288374846131788744L;

    /**
     * 响应code,0成功其他失败，可以自定义
     */
    private int rtnCode;
    /**
     * 响应消息
     */
    private String rtnMsg;
    /**
     * 响应实体
     */
    private Object data;

    private ResultMsg() {
    }

    private ResultMsg(Object data) {
        this.rtnCode = 0;
        this.data = data;
    }

    private ResultMsg(int rtnCode, String rtnMsg) {
        this.rtnCode = rtnCode;
        this.rtnMsg = rtnMsg;
    }

    /**
     * 成功消息
     * @return
     */
    public static ResultMsg successResult() {
        return new ResultMsg(0, "");
    }

    /**
     * 成功消息，消息自定义
     * @param msg 消息
     * @return
     */
    public static ResultMsg successResult(String msg) {
        return new ResultMsg(0, msg);
    }

    /**
     * 成功消息，数据自定义
     * @param data 数据
     * @return
     */
    public static ResultMsg successResult(Object data) {
        return new ResultMsg(data);
    }

    /**
     * 成功消息，数据消息都自定义
     * @param data 数据
     * @param msg 消息
     * @return
     */
    public static ResultMsg successResult(Object data, String msg) {
        ResultMsg resultMsg = new ResultMsg(data);
        resultMsg.setRtnMsg(msg);
        return resultMsg;
    }

    /**
     * 失败消息，消息
     * @param msg 消息
     * @return
     */
    public static ResultMsg errorResult(String msg) {
        return new ResultMsg(-9999, msg);
    }

    /**
     * 失败消息，编码以及消息
     * @param rtnCode 自定义编码（不能为0）
     * @param msg 失败消息
     * @return
     */
    public static ResultMsg errorResult(int rtnCode, String msg) {
        if(rtnCode == 0){
            return errorResult(msg);
        }
        return new ResultMsg(rtnCode, msg);
    }


    public int getRtnCode() {
        return rtnCode;
    }

    public void setRtnCode(int rtnCode) {
        this.rtnCode = rtnCode;
    }

    public String getRtnMsg() {
        return rtnMsg;
    }

    public void setRtnMsg(String rtnMsg) {
        this.rtnMsg = rtnMsg;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }
}
